<?php

/**
 * @file rd.inc.php
 *
 * @brief fichier regroupant les fonctions de gestions des donnees envoyees
 *   par GET ou POST  
 */ 

if (!defined('endl'))
  define('endl', "\n");

$rd_datas    = get_magic_quotes_gpc() ? strip_array($_REQUEST) : $_REQUEST;
$rd_errors   = array();
$rd_messages = array();

/**
 * @brief retourne le parametre si il existe, $default sinon
 * 
 * @param $name nom du parametre
 * @param $default valeur utilisee sir le parametre n'existe pas
 * 
 * @return la valeur correspondante
 */ 
function rd_get($name, $default=false)
{
  return ($name && isset($GLOBALS['rd_datas'][$name]))
       ? $GLOBALS['rd_datas'][$name]
       : $default;
}

/**
 * @brief assigne une valeur a un parametre
 * 
 * @param $name nom du parametre
 * @param $value valeur assignee a $name
 */ 
function rd_set($name, $value)
{
  $GLOBALS['rd_datas'][$name] = $value;
}

/**
 * @brief Remise a zero d'un parametre
 * 
 * @param $name nom du parametre a reinitialiser
 */ 
function rd_reset($name)
{
  if (isset($GLOBALS['rd_datas'][$name]))
    unset($GLOBALS['rd_datas'][$name]);
}

/**
 * @brief Ajoute une erreur a la liste des erreurs
 * 
 * @param $str message d'erreur
 */ 
function rd_addError($str)
{
  if ($str)
    $GLOBALS['rd_errors'][] = $str;
}

/////////////////////////////////////////////////
// RaZ d'un champ
function rd_reset_error()
{
  if (isset($GLOBALS['rd_errors']))
    unset($GLOBALS['rd_errors']);
}

/////////////////////////////////////////////////
// RaZ d'un champ
function rd_reset_message()
{
  if (isset($GLOBALS['rd_messages']))
    unset($GLOBALS['rd_messages']);
}

/**
 * @brief Ajoute un message a la liste des messages
 * 
 * @param $str message
 */ 
function rd_addMessage($str)
{
  if ($str)
    $GLOBALS['rd_messages'][] = $str;
}

/**
 * @brief affiche le code HTML de la liste des erreurs
 * 
 * @param $bEntities bool indique si il faut utiliser les entitees HTML
 */ 
function rd_printErrors($bEntities = false)
{
  if (rd_haveErrors())
  {
    print '<ul id="rd-errors">'.endl;
    foreach ($GLOBALS['rd_errors'] as $err)
      printf('  <li>%s</li>'.endl, $bEntites ? htmlentities($err) : $err);
    print '</ul>'.endl;
  }
}

/**
 * @brief affiche le code HTML de la liste des messages
 * 
 * @param $bEntities bool indique si il faut utiliser les entitees HTML
 */ 
function rd_printMessages($bEntities = false)
{
  if (rd_haveMessages())
  {
    print '<ul id="rd-messages">'.endl;
    foreach ($GLOBALS['rd_messages'] as $msg)
      printf('  <li>%s</li>'.endl, $bEntites ? htmlentities($msg): $msg);
    print '</ul>'.endl;
  }
}

/**
 * Affiche tous les messages
 */ 
function rd_print_all_Messages()
{
    print '<div id="rd_all_messages">'.endl;
    rd_printMessages();
    rd_printErrors();
    print '</div>'.endl;
}

/**
 * Supprime tous les messages
 */ 
function rd_reset_all_Messages()
{
  rd_reset_error();
  rd_reset_message();
}

/**
 * @brief indique si il y a des messages
 * 
 * @return true si il y a des messages, false sinon
 */ 
function rd_haveMessages()
{
  return (count($GLOBALS['rd_messages']) != 0);
}

/**
 * @brief indique si il y a des erreurs
 * 
 * @return true si il y a des erreurs, false sinon
 */ 
function rd_haveErrors()
{
  return (count($GLOBALS['rd_errors']) != 0);
}

?>
